Event loop
Node.jsが大量のリクエストを捌ける仕組み
https://gyazo.com/d6bfced83636e531a138a7c918d4865a
https://www.slideshare.net/shigeki_ohtsu/node-v012tng12/14 (2014-04-23)
https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/#event-loop-explained
内部実装から読み解くNode.js(v11.0.0) Eventloop - Qiita
Node.jsでのイベントループの仕組みとタイマーについて - 技術探し
サンプル付きでself-containedな記事なので最初にこれを読むとよいkadoyau.icon
イベントループとは、JavaScriptがシングルスレッドなのにもかかわらず、効率よくノンブロッキングI/Oを実行できるようにする仕組みです。
イベントループはメインスレッドで実行されます。
Node.jsのイベントループはlibuvに基づきます。
イベントループには6つのフェーズが存在する
そのうち4つのフェーズでJSを実行するタイミングがある
それぞれのフェーズで実行するべきジョブを積むjob queueが存在しており(つまり4つのキューを持ち)、ループごとに順次実行される
このキューはlibuvが提供する
キューがemptyになるかコールバックの上限に達したらイベントループは次のフェーズへ遷移します
それとは別に2つのキューが存在し、フェーズ終了ごとに空になるまで実行される
キュー
nextTickQueue
microTaskQueue
このキューはNode.jsが管理する
Node.jsのイベントループを理解する | POSTD
飲み込めなかったkadoyau.icon
✨♻️ JavaScript Visualized: Event Loop (Jan 16, 2020)
https://gyazo.com/edca0b28d3de98f77da38d0f994beebd
利点と欠点
イベントはスレッドに比べて何故ダメなのか (Why Events Are A Bad Idea)
Why Events Are A Bad Idea(for high-concurrency servers)のサマリ
preemption